package com.lcn.controller;

import com.lcn.base.BaseInfoProperties;
import com.lcn.grace.result.GraceJSONResult;
import com.lcn.grace.result.ResponseStatusEnum;
import com.lcn.pojo.Users;
import com.lcn.pojo.bo.UserModifyBO;
import com.lcn.pojo.vo.UsersVO;
import com.lcn.service.UsersService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;

@RequestMapping("/userinfo")
@RestController
public class UsersController extends BaseInfoProperties {

    @Resource
    private UsersService usersService;

    /**
     * 修改用户信息
     * @param userModifyBO
     * @return
     */
    @PostMapping("/modify")
    public GraceJSONResult modify(@RequestBody UserModifyBO userModifyBO) {
        usersService.modify(userModifyBO);
        UsersVO usersVO = usersService.getUserInfo(userModifyBO.getUserId(), true);
        return GraceJSONResult.ok(usersVO);
    }

    /**
     * 查询用户基础信息
     * @param userId
     * @return
     */
    @PostMapping("/get")
    public GraceJSONResult get(String userId) {
        return GraceJSONResult.ok(usersService.getUserInfo(userId, false));
    }

    /**
     * 更新头像
     * @param userId
     * @param face
     * @return
     */
    @PostMapping("/updateFace")
    public GraceJSONResult updateFace(@RequestParam("userId") String userId, @RequestParam("face") String face) {
        UserModifyBO userModifyBO = new UserModifyBO();
        userModifyBO.setUserId(userId);
        userModifyBO.setFace(face);
        usersService.modify(userModifyBO);
        UsersVO usersVO = usersService.getUserInfo(userId, true);
        return GraceJSONResult.ok(usersVO);
    }

    /**
     * 更新朋友圈背景图
     * @param userId
     * @param url
     * @return
     */
    @PostMapping("/updateFriendCircleBg")
    public GraceJSONResult updateFriendCircleBg(@RequestParam("userId") String userId, @RequestParam("url") String url) {
        UserModifyBO userModifyBO = new UserModifyBO();
        userModifyBO.setUserId(userId);
        userModifyBO.setFriendCircleBg(url);
        usersService.modify(userModifyBO);
        UsersVO usersVO = usersService.getUserInfo(userId, true);
        return GraceJSONResult.ok(usersVO);
    }

    /**
     * 更新聊天背景图
     * @param userId
     * @param url
     * @return
     */
    @PostMapping("/updateChatBg")
    public GraceJSONResult updateChatBg(@RequestParam("userId") String userId, @RequestParam("url") String url) {
        UserModifyBO userModifyBO = new UserModifyBO();
        userModifyBO.setUserId(userId);
        userModifyBO.setChatBg(url);
        usersService.modify(userModifyBO);
        UsersVO usersVO = usersService.getUserInfo(userId, true);
        return GraceJSONResult.ok(usersVO);
    }

    /**
     * 精确查询好友
     * @param queryString
     * @param request
     * @return
     */
    @PostMapping("/queryFriend")
    public GraceJSONResult queryFriend(@RequestParam("queryString") String queryString, HttpServletRequest request) {
        if (StringUtils.isBlank(queryString)) {
            return GraceJSONResult.errorCustom(ResponseStatusEnum.EMPTY_PARAM);
        }
        Users friend = usersService.getByWechatNumOrMobile(queryString);
        if (friend == null) {
            return GraceJSONResult.errorCustom(ResponseStatusEnum.FRIEND_NOT_EXIST_ERROR);
        }
        // 不能是自己
        String userId = request.getHeader(HEADER_USER_ID);
        if (friend.getId().equals(userId)) {
            return GraceJSONResult.errorCustom(ResponseStatusEnum.CAN_NOT_ADD_SELF_FRIEND_ERROR);
        }
        return GraceJSONResult.ok(friend);
    }

}
